import 'package:flutter/material.dart';
import 'package:ycbl/config/bl_style.dart';

/// 阴影
/// 这里使用了 Container 嵌套 ClipRRect，外层用来做阴影和圆角，内层用来裁剪 child（设置背景色） 超出圆角的部分，
/// 防止 child 有背景色的话，会覆盖阴影（child 的背景色不宜太深，否则看不出阴影效果，除非阴影颜色也比较明显）
/// 且，如果只使用一层 Container ，那么裁剪后，阴影也会消失
class BLShadowLayout extends StatelessWidget {

  /// 子控件
  final Widget child;
  /// 圆角大小
  final double radius;
  /// 阴影颜色
  final Color shadowColor;

  const BLShadowLayout({Key key,  this.child, this.radius = BLStyle.commonRadius, this.shadowColor,}) : super(key: key);

  @override
  Widget build(BuildContext context) {

    var borderRadius = BorderRadius.all(Radius.circular(radius));

    return Container(
      // 设置阴影和圆角
      decoration: BoxDecoration(
        boxShadow: [
          BoxShadow(
              color: shadowColor ?? Color(0xFFEAEAEA),
              blurRadius: 10, // 模糊值
              spreadRadius: 1, // 扩展阴影半径，实际显示时和 模糊值 也有关系
              //offset: const Offset(0.5, 0.5) // 阴影在 x, y 方向的偏移
          )
        ],
        borderRadius: borderRadius,
      ),

      child: ClipRRect(
        //和外层同样大小的圆角
        borderRadius: borderRadius,
        // 裁剪效率：none > hardEdge > antiAlias > antiAliasWithSaveLayer
        clipBehavior: Clip.hardEdge,
        child: child,
      ),
    );
  }
}
